package com.zhangfei;

import java.math.BigInteger;

public class MaxBigIntYearsCalculator {
    public static void main(String[] args) {
        // 创建一个BigInteger对象表示18446744073709551615
        BigInteger maxBigIntValue = new BigInteger("18446744073709551615");

        // 每秒产生的记录数
        long recordsPerSecond = 100000000L;

        // 平均每年的秒数（考虑闰年）
        double secondsPerYear = 31557600.0;

        // 计算达到最大值所需的秒数（这里需要注意，因为BigInteger没有除法运算符，我们需要使用divide方法）
        BigInteger secondsNeeded = maxBigIntValue.divide(BigInteger.valueOf(recordsPerSecond));

        // 将秒数转换为年数
        double yearsNeeded = secondsNeeded.doubleValue() / secondsPerYear;

        // 输出结果
        System.out.println("如果每秒产生" + recordsPerSecond + "条记录，并且使用BigInteger表示的自增ID从1开始，");
        System.out.printf("那么需要大约%.2f年才能达到其最大值。\n", yearsNeeded);
    }
}
